home *** CD-ROM | disk | FTP | other *** search
/ Assassins - Ultimate CD Games Collection 1 / Assassins - Ultimate CD Games Collection (1994)(Weird Science)(Track 1 of 2)[!][Amiga-CD32-CDTV][CDD5332].iso / disks / asi093.dms / asi093.adf / DRIVINGGAME.AMOS / DRIVINGGAME.amosSourceCode
AMOS Source Code  |  1992-05-20  |  10KB  |  496 lines

  1. Screen Open 0,320,256,16,Lowres
  2. Led Off 
  3. Hide 
  4. Curs Off 
  5. Flash Off 
  6. Dir$="df0:"
  7. Volume 1,10
  8. Volume 2,10
  9. Load "misc/map.abk"
  10. Load "misc/cars.abk"
  11. Load "snds/samples.abk"
  12. Open In 1,"levels/level1.map"
  13. LF=Lof(1)
  14. Close 1
  15. Reserve As Work 6,LF+64
  16. Open In 1,"levels/level1.map.val"
  17. LF=Lof(1)
  18. Close 1
  19. Reserve As Work 8,LF+64
  20.  Extension_7_0084 16,16
  21. Cls 
  22. C=2
  23. M=1
  24. O=11
  25. Dim X(C)
  26. Dim Y(C)
  27. Dim XS(C)
  28. Dim YS(C)
  29. Dim D(C)
  30. Dim DAM(C)
  31. Dim RW(C)
  32. Dim FW(C)
  33. Dim T(C)
  34. Dim HL(C)
  35. Dim LAP(C)
  36. Dim DEAD(C)
  37. Dim TL(C)
  38. Screen Open 3,320,256,8,Lowres
  39. Curs Off 
  40. Flash Off 
  41. Paper 0
  42. Cls 
  43. Track Load "music/mod.pumping classic",3
  44. Load Iff "pics/mfpic"
  45. For N=0 To 7 : Colour N,$0 : Next N
  46. Fade 2,$0,$0,$0,$0,$0,$0,$F00,$900
  47. Wait 50
  48. Track Play 3
  49. Fade 7,$0,$FFF,$BBB,$777,$555,$222,$FF0,$A70
  50. Wait 90
  51. Fade 7,$0,$FFF,$BBB,$777,$555,$222,$F0,$90
  52. Wait 90
  53. Fade 7,$0,$FFF,$BBB,$777,$555,$222,$F,$9
  54. Wait 90
  55. Fade 7,$0,$FFF,$BBB,$777,$555,$222,$F0F,$909
  56. Wait 90
  57. Fade 8
  58. Wait 200
  59. Screen Close 3
  60. BGIN:
  61. TL(1)=0 : TL(2)=0
  62. L=1
  63. CHEAT=0
  64. NTRO
  65. GAME:
  66. Screen Open 0,320,256,16,Lowres
  67. Curs Off 
  68. Flash Off 
  69. Get Icon Palette 
  70. Paper 3
  71. Cls 
  72. Double Buffer 
  73. Autoback 0
  74. LEVELLOAD[L]
  75. For N=1 To C : DAM(N)=100 : Next N
  76. Shared X(),Y(),XS(),YS(),D(),DAM(),C,M,O,RW(),FW(),T(),TV,L,HL(),LAP(),DEAD(),TT,W,KBANG,TL(),CHEAT
  77. Get Icon Palette 
  78. Bob Off 35
  79. Bob Off 36
  80. Bob Off 37
  81. Cls 0
  82.  Extension_7_0026 0,0 To 320,220
  83.  Extension_7_0006 0,0
  84. Screen Swap 
  85. Cls 0
  86.  Extension_7_0006 0,0
  87. Screen Swap 
  88. Screen Open 1,320,30,16,Lowres
  89. Screen Display 1,140,267,320,30
  90. Curs Off 
  91. Flash Off 
  92. Paper 3
  93. Ink 1
  94. Cls 3
  95. Get Icon Palette 
  96. Screen 0
  97. Bob Update Off 
  98. For N=1 To 37 : Bob Off N : Next N
  99. Bob Update 
  100. NICEBOBS[L]
  101. ROT[1]
  102. ROT[2]
  103. Bob Update 
  104. CDWN
  105. For N=1 To C
  106. DEAD(N)=0 : T(N)=0 : LAP(N)=0 : HL(N)=0
  107. XS(N)=0 : YS(N)=0 : FW(N)=0 : RW(N)=0
  108. Next N
  109. O=11 : M=0
  110. Repeat 
  111. EOG=0 : TT=0
  112. W=0
  113. For N=1 To C
  114. PLYER[N]
  115. TURNCHK[N]
  116. MVE[N]
  117. ROT[N]
  118. TILECAR[N]
  119. EDGE[N]
  120. LIMIT[N]
  121. SKID[N]
  122. BANG[N]
  123. BNCE[N]
  124. CHKBNG[N]
  125. DAMAGE[N]
  126. PITS[N]
  127. LAPCHK[N]
  128. DEAD[N]
  129. WINCHK[N]
  130. SNDS[N]
  131. If CHEAT=1 Then DAM(N)=100
  132. Next N
  133. GAMEOVER
  134. Bob Update 
  135. Wait Vbl 
  136. If W>0 Then EOG=1
  137. If TT=-2 Then EOG=1
  138. Until EOG=1
  139. If TT=-2 Then ND
  140. If(L+1)=11 Then Goto CONGRAT
  141. If W>0 Then L=L+1 : Goto GAME
  142. Goto BGIN
  143. End 
  144. Procedure ROT[CAR]
  145. Bob 32-CAR,X(CAR),Y(CAR),D(CAR)+(16*(CAR-1))
  146. End Proc
  147. Procedure ACC[CAR]
  148. If D(CAR)=1 Then XS(CAR)=(XS(CAR)/1.1) : YS(CAR)=YS(CAR)+2
  149. If D(CAR)=2 Then XS(CAR)=XS(CAR)+1 : YS(CAR)=YS(CAR)+2
  150. If D(CAR)=3 Then XS(CAR)=XS(CAR)+2 : YS(CAR)=YS(CAR)+2
  151. If D(CAR)=4 Then XS(CAR)=XS(CAR)+2 : YS(CAR)=YS(CAR)+1
  152. If D(CAR)=5 Then XS(CAR)=XS(CAR)+2 : YS(CAR)=(YS(CAR)/1.1)
  153. If D(CAR)=6 Then XS(CAR)=XS(CAR)+2 : YS(CAR)=YS(CAR)-1
  154. If D(CAR)=7 Then XS(CAR)=XS(CAR)+2 : YS(CAR)=YS(CAR)-2
  155. If D(CAR)=8 Then XS(CAR)=XS(CAR)+1 : YS(CAR)=YS(CAR)-2
  156. If D(CAR)=9 Then XS(CAR)=(XS(CAR)/1.1) : YS(CAR)=YS(CAR)-2
  157. If D(CAR)=10 Then XS(CAR)=XS(CAR)-1 : YS(CAR)=YS(CAR)-2
  158. If D(CAR)=11 Then XS(CAR)=XS(CAR)-2 : YS(CAR)=YS(CAR)-2
  159. If D(CAR)=12 Then XS(CAR)=XS(CAR)-2 : YS(CAR)=YS(CAR)-1
  160. If D(CAR)=13 Then XS(CAR)=XS(CAR)-2 : YS(CAR)=(YS(CAR)/1.1)
  161. If D(CAR)=14 Then XS(CAR)=XS(CAR)-2 : YS(CAR)=YS(CAR)+1
  162. If D(CAR)=15 Then XS(CAR)=XS(CAR)-2 : YS(CAR)=YS(CAR)+2
  163. If D(CAR)=16 Then XS(CAR)=XS(CAR)-1 : YS(CAR)=YS(CAR)+2
  164. End Proc
  165. Procedure MVE[CAR]
  166. X(CAR)=X(CAR)+(XS(CAR)/4)
  167. Y(CAR)=Y(CAR)-(YS(CAR)/4)
  168. End Proc
  169. Procedure BRK[CAR]
  170. XS(CAR)=XS(CAR)/1.1
  171. YS(CAR)=YS(CAR)/1.1
  172. End Proc
  173. Procedure EDGE[CAR]
  174. If X(CAR)<0 Then X(CAR)=0 : XS(CAR)=-(XS(CAR)/4) : DAM(CAR)=DAM(CAR)-1
  175. If X(CAR)>310 Then X(CAR)=310 : XS(CAR)=-(XS(CAR)/4) : DAM(CAR)=DAM(CAR)-1
  176. If Y(CAR)<0 Then Y(CAR)=0 : YS(CAR)=-(YS(CAR)/4) : DAM(CAR)=DAM(CAR)-1
  177. If Y(CAR)>212 Then Y(CAR)=212 : YS(CAR)=-(YS(CAR)/4) : DAM(CAR)=DAM(CAR)-1
  178. If TV=1 Then X(CAR)=X(CAR)-(XS(CAR)/4) : Y(CAR)=Y(CAR)+(YS(CAR)/4) : XS(CAR)=-XS(CAR)/200 : YS(CAR)=-YS(CAR)/200 : DAM(CAR)=DAM(CAR)-2
  179. End Proc
  180. Procedure LIMIT[CAR]
  181. If XS(CAR)>20 Then XS(CAR)=20
  182. If XS(CAR)<-20 Then XS(CAR)=-20
  183. If YS(CAR)>20 Then YS(CAR)=20
  184. If YS(CAR)<-20 Then YS(CAR)=-20
  185. End Proc
  186. Procedure BNCE[CAR]
  187. If Bob Col(32-CAR)
  188.    For N=1 To C
  189.       If Col(32-N)
  190.       NX=(XS(CAR)/1.5)
  191.       NY=(YS(CAR)/1.5)
  192.       XS(CAR)=XS(CAR)-NX
  193.       YS(CAR)=YS(CAR)-NY
  194.       XS(N)=XS(N)+NX
  195.       YS(N)=YS(N)+NY
  196.       If CHEAT=0
  197.          DAM(CAR)=DAM(CAR)-1
  198.          End If 
  199.       If DEAD(CAR)<>-1
  200.          Sam Play 4*CAR,1,14000
  201.       End If 
  202.    End If 
  203.    Next N
  204. End If 
  205. End Proc
  206. Procedure SKID[CAR]
  207. If Bob Col(32-CAR)
  208.    For N=11 To O
  209.       If Col(N)
  210.       D(CAR)=D(CAR)+Int(Rnd(2)-1)
  211.       Sam Play 4*CAR,5,5000
  212.    End If 
  213.    Next N
  214. End If 
  215. End Proc
  216. Procedure BANG[CAR]
  217. If Bob Col(32-CAR)
  218.    For N=0 To M
  219.       If Col(N)
  220.       Bob Off N
  221.       T(CAR)=5
  222.       D(CAR)=Int(Rnd(2)-1)
  223.       If CHEAT=0
  224.          DAM(CAR)=DAM(CAR)-10
  225.       End If 
  226.       Sam Play 4*CAR,1,6000
  227.    End If 
  228.    Next N
  229.    End If 
  230. End Proc
  231. Procedure CHKBNG[CAR]
  232. If T(CAR)=1 Then Bob 32-CAR,X(CAR),Y(CAR),88 : T(CAR)=T(CAR)-1
  233. If T(CAR)=2 Then Bob 32-CAR,X(CAR),Y(CAR),87 : T(CAR)=T(CAR)-1
  234. If T(CAR)=3 Then Bob 32-CAR,X(CAR),Y(CAR),86 : T(CAR)=T(CAR)-1
  235. If T(CAR)=4 Then Bob 32-CAR,X(CAR),Y(CAR),85 : T(CAR)=T(CAR)-1
  236. If T(CAR)=5 Then Bob 32-CAR,X(CAR),Y(CAR),84 : T(CAR)=T(CAR)-1
  237. End Proc
  238. Procedure TILECAR[CAR]
  239. TX=(X(CAR)+4)/16
  240. TY=(Y(CAR)+5)/16
  241. TV= Extension_7_0142(TX,TY,0)
  242. End Proc
  243. Procedure DAMAGE[CAR]
  244. If DEAD(CAR)=0
  245.    Screen 1
  246.    BH=DAM(CAR)/5
  247.    Ink 3+(2*CAR)
  248.    If BH<19
  249.       Bar 8+(32*CAR),5 To 38+(32*CAR),24-BH
  250.    End If 
  251.    Ink 2+(2*CAR)
  252.    If BH>1
  253.       Bar 8+(32*CAR),25-BH To 38+(32*CAR),25
  254.    End If 
  255. Screen 0
  256. End If 
  257. End Proc
  258. Procedure PITS[CAR]
  259. If TV=2 Then DAM(CAR)=DAM(CAR)+1
  260. If DAM(CAR)>100 Then DAM(CAR)=100
  261. End Proc
  262. Procedure LEVELLOAD[L]
  263. LD$="levels/level"+Str$(L)-" "
  264. Bload LD$+".map",Start(6)
  265. Bload "LEVELS/LEVEL1.MAP.Val",Start(8)
  266. End Proc
  267. Procedure PLYER[CAR]
  268. J=CAR-1
  269. If Fire(J)=0 Then BRK[CAR]
  270. If DEAD(CAR)<>0 Then Goto DEAD
  271. If Jleft(J)=-1 Then D(CAR)=D(CAR)-1
  272. If Jright(J)=-1 Then D(CAR)=D(CAR)+1
  273. If Fire(J)=-1 Then ACC[CAR]
  274. If Jdown(J)=-1 and RW(CAR)<5 Then Bob M,X(CAR)-(XS(CAR)/8),Y(CAR)-(YS(CAR)/8),81 : M=M+1 : RW(CAR)=RW(CAR)+1
  275. If Jup(J)=-1 and FW(CAR)<5 Then Bob O,X(CAR)-(XS(CAR)/4),Y(CAR)-(YS(CAR)/4),82 : O=O+1 : FW(CAR)=FW(CAR)+1
  276. DEAD:
  277. End Proc
  278. Procedure TURNCHK[CAR]
  279. If D(CAR)<1 Then D(CAR)=16
  280. If D(CAR)>16 Then D(CAR)=1
  281. End Proc
  282. Procedure LAPCHK[CAR]
  283. Screen 1
  284. If TV=4 Then HL(CAR)=1
  285. Pen 2+(CAR*2)
  286. Print At(16,CAR-1);"LAPS:";LAP(CAR);" TOTAL:";TL(CAR)
  287. If(TV=3 and HL(CAR)=1) Then LAP(CAR)=LAP(CAR)+1 : HL(CAR)=0 : TL(CAR)=TL(CAR)+1
  288. Screen 0
  289. End Proc
  290. Procedure NICEBOBS[TR]
  291. If TR=1
  292.    Bob 39,191,91,93
  293.    Bob 38,191,6,94
  294.    Bob 37,105,114,91
  295.    Bob 36,95,20,90
  296.    Bob 35,265,145,89
  297.    Bob Update 
  298.    X(1)=173 : Y(1)=3
  299.    X(2)=173 : Y(2)=17
  300.    D(1)=5 : D(2)=5
  301.    End If 
  302. If TR=2
  303.    Bob 39,96,202,93
  304.    Bob 38,207,6,94
  305.    Bob 37,230,120,90
  306.    Bob 36,140,40,90
  307.    Bob 35,265,165,89
  308.    Bob Update 
  309.    X(1)=189 : Y(1)=3
  310.    X(2)=189 : Y(2)=17
  311.    D(1)=5 : D(2)=5
  312.    End If 
  313. If TR=3
  314.    Bob 39,112,202,93
  315.    Bob 38,191,6,94
  316.    Bob 36,240,70,90
  317.    Bob 35,30,85,89
  318.    Bob Update 
  319.    X(1)=173 : Y(1)=3
  320.    X(2)=173 : Y(2)=17
  321.    D(1)=5 : D(2)=5
  322.    End If 
  323. If TR=4
  324.    Bob 39,113,171,93
  325.    Bob 38,223,6,94
  326.    Bob 37,53,151,90
  327.    Bob 36,87,21,90
  328.    Bob 35,290,114,89
  329.    Bob Update 
  330.    X(1)=205 : Y(1)=3
  331.    X(2)=205 : Y(2)=17
  332.    D(1)=5 : D(2)=5
  333.    End If 
  334. If TR=5
  335.    Bob 39,146,171,93
  336.    Bob 38,95,116,94
  337.    Bob 37,25,15,89
  338.    Bob 36,135,95,89
  339.    Bob 35,255,135,89
  340.    Bob Update 
  341.    X(1)=77 : Y(1)=115
  342.    X(2)=77 : Y(2)=129
  343.    D(1)=5 : D(2)=5
  344.    End If 
  345. If TR=6
  346.    Bob 39,79,6,94
  347.    Bob 38,255,6,94
  348.    X(1)=61 : Y(1)=3
  349.    X(2)=237 : Y(2)=3
  350.    D(1)=5 : D(2)=5
  351.    End If 
  352. If TR=7
  353.    Bob 39,156,201,93
  354.    Bob 38,214,6,94
  355.    Bob 37,35,4,91
  356.    Bob 35,270,140,89
  357.    Bob Update 
  358.    X(1)=189 : Y(1)=3
  359.    X(2)=189 : Y(2)=17
  360.    D(1)=5 : D(2)=5
  361.    End If 
  362. If TR=8
  363.    Bob 39,144,90,93
  364.    Bob 38,191,6,94
  365.    Bob 37,100,174,92
  366.    Bob 36,100,126,92
  367.    Bob 35,130,16,89
  368.    Bob Update 
  369.    X(1)=173 : Y(1)=3
  370.    X(2)=173 : Y(2)=17
  371.    D(1)=5 : D(2)=5
  372.    End If 
  373. If TR=9
  374.    Bob 39,160,200,93
  375.    Bob 38,175,22,94
  376.    Bob 35,265,165,89
  377.    Bob Update 
  378.    X(1)=157 : Y(1)=33
  379.    X(2)=157 : Y(2)=19
  380.    D(1)=5 : D(2)=5
  381.    End If 
  382. If TR=10
  383.    Bob 39,193,200,93
  384.    Bob 38,223,133,94
  385.    Bob 37,90,190,92
  386.    Bob 36,32,85,90
  387.    Bob 35,265,165,89
  388.    Bob Update 
  389.    X(1)=205 : Y(1)=131
  390.    X(2)=205 : Y(2)=145
  391.    D(1)=5 : D(2)=5
  392.    End If 
  393. End Proc
  394. Procedure DEAD[CAR]
  395. If(DAM(CAR)<0 and DEAD(CAR)<>-1) Then DEAD(CAR)=1
  396. End Proc
  397. Procedure GAMEOVER
  398. TT=0
  399. For N=1 To C : TT=TT+DEAD(N) : Next N
  400. End Proc
  401. Procedure NTRO
  402. Screen Open 3,320,256,32,Lowres
  403. Curs Off 
  404. Flash Off 
  405. Colour 0,$0
  406. Paper 0
  407. Cls 
  408. Wait Vbl 
  409. Load Iff "pics/title.pic"
  410. Screen Swap 
  411. Track Load "music/mod.titles",3
  412. Track Play 3
  413. Repeat 
  414. A$=Inkey$
  415. If A$="c" Then CHEAT=1 : Bell 
  416. Until Fire(1)<>0
  417. Track Stop 
  418. Erase 3
  419. Screen Close 3
  420. End Proc
  421. Procedure ND
  422. Cls 
  423. Screen Swap 
  424. Cls 
  425. Screen Swap 
  426. Screen 0
  427. Screen To Front 
  428. Screen Open 3,320,256,32,Lowres
  429. Curs Off 
  430. Flash Off 
  431. Paper 0
  432. Colour 0,$0
  433. Cls 0
  434. Wait Vbl 
  435. Load Iff "pics/dead.pic"
  436. Screen Swap 
  437. Wait Vbl 
  438. Track Load "music/mod.dead",3
  439. Track Play 3
  440. Paper 0
  441. Pen 18
  442. Print At(10,18);"   RED CAR SCORED:";TL(1)
  443. Print At(10,19);"YELLOW CAR SCORED:";TL(2)
  444. Repeat 
  445. Until Fire(1)<>0
  446. Track Stop 
  447. Erase 3
  448. Screen Close 3
  449. Screen Close 1
  450. Screen Close 0
  451. End Proc
  452. Procedure WINCHK[CAR]
  453. If LAP(CAR)>3 Then W=CAR
  454. End Proc
  455. Procedure SNDS[CAR]
  456.  
  457. Rem engine 
  458.  
  459. SP=Abs(XS(CAR))+Abs(YS(CAR))
  460. If DEAD(CAR)=0 Then Sam Play 3-CAR,3,16000+(900*SP)
  461.  
  462. Rem skid 
  463.  
  464. If(Jleft(CAR-1)=-1 and SP>20 or Jright(CAR-1)=-1 and SP>20) Then Sam Play 4*CAR,5,5000
  465.  
  466. Rem deadcrash  
  467.  
  468. If DEAD(CAR)=1 Then DEAD(CAR)=-1 : Sam Play 4*CAR,2,5000
  469. End Proc
  470. Procedure CDWN
  471. For N=1 To 4 : Sam Play 15,4,7000 : Wait 40 : Next N
  472. End Proc
  473. CONGRAT:
  474. Screen Open 3,320,256,32,Lowres
  475. Curs Off 
  476. Flash Off 
  477. Colour 0,$0
  478. Cls 0
  479. Wait Vbl 
  480. Load Iff "pics/congrat.pic"
  481. Screen Swap 
  482. Wait Vbl 
  483. Track Load "music/mod.congrat",3
  484. Track Play 3
  485. Paper 17
  486. Pen 0
  487. Print At(10,8);"   RED CAR SCORED:";TL(1)
  488. Print At(10,9);"YELLOW CAR SCORED:";TL(2)
  489. Repeat 
  490. Until Joy(1)<>0
  491. Track Stop 
  492. Erase 3
  493. Screen Close 3
  494. Screen Close 1
  495. Screen Close 0
  496. Goto BGIN